Java8 Lambda 表达式中的 forEach 如何提前终止? | 您所在的位置:网站首页 › for 循环中return › Java8 Lambda 表达式中的 forEach 如何提前终止? |
结束本轮循环,进行下一轮循环使用"continue"; 另外,在普通for里,如果使用"return",不仅强制结束for循环体,还会提前结束包含这个循环体的整个方法。 而在Java8中的forEach中,"break"或"continue"是不被允许使用的,而return的意思也不是原来return代表的含义了。 我们来看看源码: 图片 forEach,说到底是一个方法,而不是循环体,结束一个方法的执行用什么?当然是return啦; java8的forEach和Java的forEach用法是何其的相似 Java不是万能的,不要再吐槽它垃圾了。 # 解决方案 方案一:使用原始的foreach循环 图片 使用过eclipse的老铁们应该知道,当我们输入:foreach,再按快捷键:Alt+/,就会出现foreach的代码提示。 如上图所示,这种格式的for循环才是真正意义上的foreach循环。 在idea中输入,按照上述操作是不会有任何代码提示的,那如何才能在idea中,调出来呢? 图片 for循环可以提前终止。 方式一:break 图片 方式二:return(不推荐使用) 图片 方案二:抛出异常 我们知道,要想结束一个方法的执行,正常的逻辑是:使用return; 但是,在实际运行中,往往有很多不突发情况导致代码提前终止,比如:空指针异常,其实,我们也可以通过抛出假异常的方式来达到终止forEach方法的目的。 图片 如果觉得这种方式不友好,可以再包装一层。 图片 这样,就完美了。 这里,需要注意的一点是:要确保你forEach方法体内不能有其它代码可能会抛出的异常与自己手动抛出并捕获的异常一样; 否则,当真正该因异常导致代码终止的时候,因为咱们手动捕获了并且没做任何处理,岂不是搬起石头砸自己的脚吗? • 面试官:聊一聊Java 泛型通配符 T,E,K,V,? • 阿里一面:如何保证API接口数据安全? • 0.2秒居然复制了100G文件? • Java17,有史以来最快 JDK! 最近写了一套 6000 页的 Java 学习手册,以及珍藏四本 Java 人必读4大神器,分享到知乎已经 3 万赞了! 每篇文章图文并茂,附有源码。还有电子书合集 如果你想获得完整PDF可以通过以下方式获得 资料获取方法 明天见(。・ω・。)返回搜狐,查看更多 |
CopyRight 2018-2019 实验室设备网 版权所有 |